# 给定两个二叉树，想象当你将它们中的一个覆盖到另一个上时，两个二叉树的一些节点便会重叠。

# 你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠，那么将他们的值相加作为节点合并后的新值，否则不为 NULL 的节点将直接作为新二叉树的节点。

# 来源：力扣（LeetCode）
# 链接：https://leetcode-cn.com/problems/merge-two-binary-trees
# 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。

# Definition for a binary tree node.
# 执行用时：
# 64 ms
# , 在所有 Python3 提交中击败了
# 92.36%
# 的用户
# 内存消耗：
# 16.3 MB
# , 在所有 Python3 提交中击败了
# 5.05%
# 的用户
class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right
class Solution:
    def mergeTrees(self, root1: TreeNode, root2: TreeNode) -> TreeNode:
        def merge_tree(root1,root2):
            if (root1 != None) and (root2 != None):
                root1.val = root1.val + root2.val
                print(root1.val)
                if (root1.left == None) and (root2.left != None):
                    temp = TreeNode()
                    root1.left = temp
                if (root1.right == None) and (root2.right != None):
                    temp = TreeNode()
                    root1.right = temp
                merge_tree(root1.left,root2.left)
                merge_tree(root1.right,root2.right)
            elif(root1 != None) and (root2 == None):
                root1.val =root1.val
                merge_tree(root1.left,None)
                merge_tree(root1.right,None)
            else:
                return
        if root1 == None:
            merge_tree(root2,root1)
            return root2
        else:
            merge_tree(root1,root2)
            return root1
            